package achievement.service;

import achievement.dao.SzlCheckstudentArcDao;
import achievement.dao.SzlStudentArcDao;
import achievement.dao.SzlThesisDao;
import achievement.domain.SzlCheckstudentArc;
import achievement.domain.SzlStudentArc;
import achievement.domain.SzlThesis;
import common.dao.StudentDao;
import common.domain.Student;
import utils.DAOFactory;

import java.util.Date;
import java.util.List;
import java.util.Scanner;


public class mainFunction {
//    private static SzlStudentArcDao szlStudentArcDao = DAOFactory.getInstance().getSzlStudentArcDao();
    private static StudentDao studentDao = DAOFactory.getInstance().getStudentDao();
    private static SzlThesisDao szlThesisDao = DAOFactory.getInstance().getSzlThesisDao();
//    private static SzlCheckstudentArcDao szlCheckstudentArcDao = DAOFactory.getInstance().getSzlCheckstudentArcDao();
    public static void main(String[] args) {
        //查询某个学生所有的成果
        //selectAllArc(1l);
        //学号为1的学生申请论文成果
        //applyArc(1l);
        //导师进行成果认定初审
        //FirstCheck(1l);
        //研究生培养管理员进行成果认定终审
        LastCheck(1l);
    }
    //查询某个学生所有的成果
    public static void selectAllArc(Long student_id){
//        //需要先判断该学生在不在
//        Student student = studentDao.selectById(student_id);
//        if(student.getStudentId() == null){
//            System.out.println("该学号学生不存在!");
//            return;
//        }
//        SzlStudentArc szlStudentArc = SzlStudentArc.builder().studentId(student_id).build();
//        List<SzlStudentArc> arcList = szlStudentArcDao.selectList(szlStudentArc);
//        int total = arcList.size();
//        System.out.println("该学生共有 "+total +" 项成果");
//        int arctype[] ={0,0,0,0,0,0,0,0};
//        for(SzlStudentArc item:arcList){
//            arctype[item.getType()]++;
//        }
//        System.out.println("其中包括：" +
//                "");
//        for(int i=1;i<=7;i++){
//            if(arctype[i]!=0){
//                System.out.println(arcTypeName(i)+" " +arctype[i] +"项");
//            }
//        }
    }
    //学生提交成果认定申请
    public static void applyArc(Long student_id){
//        //先判断该学生在不在，如果在得到type，区分是博士还是硕士，然后再提交相应的成果申请
//        Student student = studentDao.selectById(student_id);
//        if(student.getStudentId() == null){
//            System.out.println("该学号学生不存在!");
//            return;
//        }
//        if(student.getStudentType().equals(0)){ //博士
//            System.out.println("您可申请的成果类别有：论文、奖励、标准");
//            //已申请论文为例
//            //首先需要先新建论文实例,获取成果id
//            SzlThesis szlThesis = SzlThesis.builder().thesisName("apply1").thesisPublish("apply1")
//                    .indexType("apply1").thesisStatus("已发表").thesisTime(new Date())
//                    .thesisBelong("apply1").thesisProof("apply1").build();
//            Long thesis_id = szlThesisDao.insert(szlThesis);
//            //新建一条成果申请表插入到数据库中,论文type为1，初审导师默认为该学生的导师，终审默认设置id为1的研究生培养管理人员
//            SzlCheckstudentArc szlCheckstudentArc = SzlCheckstudentArc.builder().studentId(student_id)
//                    .arcId(thesis_id).type(1).teacherId(student.getTeacherId()).adminId(1l).build();
//            szlCheckstudentArcDao.insert(szlCheckstudentArc);
//            System.out.println("论文成果已提交申请");
//        }
//        else{//硕士
//            System.out.println("您可申请的成果类别有：论文、教材、标准、专利、报告、软硬件平台开发证明");
//        }

    }
    //导师进行成果认定初审
    public static void FirstCheck(Long teacher_id){
//        //查询初审老师是该老师的所有申请
//        SzlCheckstudentArc thisteacher = SzlCheckstudentArc.builder().teacherId(teacher_id).build();
//        List<SzlCheckstudentArc> checkList = szlCheckstudentArcDao.selectList(thisteacher);
//        if(checkList.size() == 0){
//            System.out.println("该导师下没有任何成果认定申请");
//            return;
//        }
//        for(SzlCheckstudentArc item:checkList){
//            if (item.getResult1() == null){ //说明该条记录还没进行审核
//                System.out.println("您需要对学号为"+item.getStudentId()+"的学生成果进行审核。");
//                System.out.println("该学生的申请成果如下：");
//                //此处简化了，以论文成果为例，详细的要通过type类型区分不同成果，进而调用不同的dao查询
//                SzlThesis studentArc = szlThesisDao.selectById(item.getArcId());
//                System.out.println(studentArc);
//                System.out.println("1、通过 2、不通过");
//                System.out.println("请选择是否通过：");
//                Scanner scanner = new Scanner(System.in);
//                int select = scanner.nextInt();
//                if(select == 1){
//                    item.setResult1("通过");
//                }
//                else{
//                    item.setResult1("不通过");
//                }
//                System.out.println("已完成审核。");
//                szlCheckstudentArcDao.updateById(item);
//            }
//        }

    }
    //研究生培养管理员进行成果认定终审
    public static void LastCheck(Long admin_id){
//        //查询终审管理员是该管理员的所有申请
//        SzlCheckstudentArc thisadmin = SzlCheckstudentArc.builder().adminId(admin_id).build();
//        List<SzlCheckstudentArc> checkList = szlCheckstudentArcDao.selectList(thisadmin);
//        if(checkList.size() == 0){
//            System.out.println("该研究生培养管理员下没有任何成果认定申请");
//            return;
//        }
//        for(SzlCheckstudentArc item:checkList){
//            if ("通过".equals(item.getResult1()) && item.getResult2() == null){ //只能对初审结果为通过且没有终审的记录进行终审
//                System.out.println("您需要对学号为"+item.getStudentId()+"的学生成果进行最终审核。");
//                System.out.println("该学生的申请成果如下：");
//                //此处简化了，以论文成果为例，详细的要通过type类型区分不同成果，进而调用不同的dao查询
//                SzlThesis studentArc = szlThesisDao.selectById(item.getArcId());
//                System.out.println(studentArc);
//                System.out.println("1、通过 2、不通过");
//                System.out.println("请选择是否通过：");
//                Scanner scanner = new Scanner(System.in);
//                int select = scanner.nextInt();
//                if(select == 1){
//                    item.setResult2("通过"); //如果通过最终申请需要将该成果并入学生成果表
//                    SzlStudentArc szlStudentArc = SzlStudentArc.builder().studentId(item.getStudentId())
//                            .arcId(item.getArcId()).type(item.getType()).build();
//                    szlStudentArcDao.insert(szlStudentArc);
//                }
//                else{
//                    item.setResult2("不通过");
//                }
//                System.out.println("已完成审核。");
//                szlCheckstudentArcDao.updateById(item);
//            }
//        }
    }
    public static String arcTypeName(int type){
        switch (type){
            case 1:return "论文";
            case 2:return "奖励";
            case 3:return "标准";
            case 4:return "报告";
            case 5:return "专利";
            case 6:return "软硬件平台开发证明";
            case 7:return "教材";
            default:return null;
        }
    }
}
